package role

import (
	"github.com/jinzhu/gorm"
	"time"
)

// CREATE TABLE `roles` (
//
//	`id` int(11) NOT NULL AUTO_INCREMENT,
//	`role_name` varchar(255) DEFAULT NULL,
//	`description` varchar(255) DEFAULT NULL,
//	`cover` varchar(255) DEFAULT NULL,
//	`theme` varchar(255) DEFAULT NULL,
//	`left_theme` varchar(255) DEFAULT NULL,
//	`right_theme` varchar(255) DEFAULT NULL,
//	`role` varchar(255) DEFAULT NULL,
//	`created_at` datetime DEFAULT NULL,
//	`updated_at` datetime DEFAULT NULL,
//	`status` tinyint(1) NOT NULL DEFAULT 0,
//	`tar_struct` varchar(255) DEFAULT NULL,
//	`user_id` varchar(255) DEFAULT NULL,
//	`untar_path_name` varchar(255) DEFAULT NULL,
//	`is_enabled` tinyint(1) NOT NULL DEFAULT 0,
//	PRIMARY KEY (`id`)
//
// ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
type Role struct {
	Id          string    `json:"id" gorm:"column:id;primary_key"`
	RoleName    string    `json:"role_name" gorm:"column:role_name"`
	Description string    `json:"description" gorm:"column:description"`
	Cover       string    `json:"cover" gorm:"column:cover"`
	Theme       string    `json:"theme" gorm:"column:theme"`
	LeftTheme   string    `json:"left_theme" gorm:"column:left_theme"`
	RightTheme  string    `json:"right_theme" gorm:"column:right_theme"`
	Role        string    `json:"role" gorm:"column:role"`
	CreatedAt   time.Time `json:"created_at" gorm:"column:created_at"`
	UpdatedAt   time.Time `json:"updated_at" gorm:"column:updated_at"`
	Status      int       `json:"status" gorm:"column:status"`
	//tar_struct
	TarStruct     string `json:"tar_struct" gorm:"column:tar_struct"`
	UserId        string `json:"user_id" gorm:"column:user_id"`
	UntarPathName string `json:"untar_path_name" gorm:"column:untar_path_name"`
	IsEnabled     int    `json:"is_enabled" gorm:"column:is_enabled"`
}

func (r *Role) TableName() string {
	return "roles"
}
func (r *Role) Create(db *gorm.DB) error {
	return db.Table(r.TableName()).Create(r).Error
}
func (r *Role) GetListByUserId(db *gorm.DB) (roles []Role, err error) {
	return roles, db.Table(r.TableName()).Where("user_id = ?", r.UserId).Where("status=?", 1).Find(&roles).Error
}

func (r *Role) Delete(db *gorm.DB) error {
	return db.Table(r.TableName()).Delete(r).Error
}
func (r *Role) Update(db *gorm.DB) error {
	return db.Table(r.TableName()).Save(r).Error
}
